#ifndef NES_H
#define NES_H

#define FPS 35
#define SCREEN_WIDTH 256
#define SCREEN_HEIGHT 240

typedef struct __pal {
    int r;
    int g;
    int b;
} pal;

static const pal pale[64] = {
    { 0x80, 0x80, 0x80 },
    { 0x00, 0x00, 0xBB },
    { 0x37, 0x00, 0xBF },
    { 0x84, 0x00, 0xA6 },
    { 0xBB, 0x00, 0x6A },
    { 0xB7, 0x00, 0x1E },
    { 0xB3, 0x00, 0x00 },
    { 0x91, 0x26, 0x00 },
    { 0x7B, 0x2B, 0x00 },
    { 0x00, 0x3E, 0x00 },
    { 0x00, 0x48, 0x0D },
    { 0x00, 0x3C, 0x22 },
    { 0x00, 0x2F, 0x66 },
    { 0x00, 0x00, 0x00 },
    { 0x05, 0x05, 0x05 },
    { 0x05, 0x05, 0x05 },
    { 0xC8, 0xC8, 0xC8 },
    { 0x00, 0x59, 0xFF },
    { 0x44, 0x3C, 0xFF },
    { 0xB7, 0x33, 0xCC },
    { 0xFF, 0x33, 0xAA },
    { 0xFF, 0x37, 0x5E },
    { 0xFF, 0x37, 0x1A },
    { 0xD5, 0x4B, 0x00 },
    { 0xC4, 0x62, 0x00 },
    { 0x3C, 0x7B, 0x00 },
    { 0x1E, 0x84, 0x15 },
    { 0x00, 0x95, 0x66 },
    { 0x00, 0x84, 0xC4 },
    { 0x11, 0x11, 0x11 },
    { 0x09, 0x09, 0x09 },
    { 0x09, 0x09, 0x09 },
    { 0xFF, 0xFF, 0xFF },
    { 0x00, 0x95, 0xFF },
    { 0x6F, 0x84, 0xFF },
    { 0xD5, 0x6F, 0xFF },
    { 0xFF, 0x77, 0xCC },
    { 0xFF, 0x6F, 0x99 },
    { 0xFF, 0x7B, 0x59 },
    { 0xFF, 0x91, 0x5F },
    { 0xFF, 0xA2, 0x33 },
    { 0xA6, 0xBF, 0x00 },
    { 0x51, 0xD9, 0x6A },
    { 0x4D, 0xD5, 0xAE },
    { 0x00, 0xD9, 0xFF },
    { 0x66, 0x66, 0x66 },
    { 0x0D, 0x0D, 0x0D },
    { 0x0D, 0x0D, 0x0D },
    { 0xFF, 0xFF, 0xFF },
    { 0x84, 0xBF, 0xFF },
    { 0xBB, 0xBB, 0xFF },
    { 0xD0, 0xBB, 0xFF },
    { 0xFF, 0xBF, 0xEA },
    { 0xFF, 0xBF, 0xCC },
    { 0xFF, 0xC4, 0xB7 },
    { 0xFF, 0xCC, 0xAE },
    { 0xFF, 0xD9, 0xA2 },
    { 0xCC, 0xE1, 0x99 },
    { 0xAE, 0xEE, 0xB7 },
    { 0xAA, 0xF7, 0xEE },
    { 0xB3, 0xEE, 0xFF },
    { 0xDD, 0xDD, 0xDD },
    { 0x11, 0x11, 0x11 },
    { 0x11, 0x11, 0x11 }
};

enum Flags{UP=0x80,DOWN=0x40,LEFT=0x20,RIGHT=0x10,
           A=0x8,B=0x4,C=0x2,D=0x1};


#endif
